#include "Steering_engine.h"  

//===================================================变量声明===================================================
//全局变量
int Current_y = 500;
int Current_x = 500;
uint8_t Step = 10;
//===================================================函数===================================================
/*---------------------------------------------------------------
 【函    数】(1)Two_dimension_SE_init
 【功    能】二位舵机云台初始化
 【参    数】无
 【返 回 值】无
 【注意事项】Two_dimension_SE_init();
 ----------------------------------------------------------------*/
void Two_dimension_SE_init(void)
{
	PWM_init_T2_CH1_PA0(Current_y);//
	PWM_init_T2_CH2_PA1(Current_x);
}
/*---------------------------------------------------------------
 【函    数】(2)PWM_set_SE_X
 【功    能】舵机云台x轴运动，能够控制舵机进行x*step步长移动
 【参    数】1.运动步长
 【返 回 值】无
 【注意事项】
 ----------------------------------------------------------------*/
uint16_t PWM_set_SE_X(int16_t x)
{
	Current_x = Limit_int(Current_x + x*Step,500,2500);
	PWM_set_T2_CH2_PA1(Current_x);
	
	return Current_x;
}
/*---------------------------------------------------------------
 【函    数】(3)PWM_set_SE_Y
 【功    能】舵机云台y轴运动，能够控制舵机进行y*step步长移动
 【参    数】1.运动步长
 【返 回 值】无
 【注意事项】
 ----------------------------------------------------------------*/
uint16_t PWM_set_SE_Y(int16_t y)
{
	Current_y = Limit_int(Current_y + y*Step,500,2500);
	PWM_set_T2_CH1_PA0(Current_y);
	
	return Current_y;
}

/*---------------------------------------------------------------
 【函    数】(4)Get_target_x
 【功    能】获取目标点的x位置
 【参    数】
 【返 回 值】目标点x位置值
 【注意事项】
 ----------------------------------------------------------------*/
int Get_target_x(void)
{
	int x = 500;
	return x;
}
/*---------------------------------------------------------------
 【函    数】(5)Get_target_y
 【功    能】获取目标点的y位置
 【参    数】
 【返 回 值】目标点y位置值
 【注意事项】
 ----------------------------------------------------------------*/
int Get_target_y(void)
{
	int y = 500;
	return y;
}
/*---------------------------------------------------------------
 【函    数】(6)SE_control
 【功    能】二维舵机云台位置式pid控制
 【参    数】
 【返 回 值】
 【注意事项】
 ----------------------------------------------------------------*/
void SE_control(void)
{
	int step_x = 0,step_y = 0;
	int x,y;
	x = Get_target_x();
	step_x = PID_posision_coord_x(x);
	PWM_set_SE_X(step_x);
	
	y = Get_target_y();
	step_y = PID_posision_coord_y(y);
	PWM_set_SE_Y(step_y);
}
/*---------------------------------------------------------------
 【函    数】(5)SE_reset
【功    能】二维舵机云台位置复位
 【参    数】
 【返 回 值】
 【注意事项】
 ----------------------------------------------------------------*/
void SE_reset(void)
{
	uint16_t centre_x = 1600;//2140
	uint16_t centre_y = 1500;//1000
	PWM_set_T2_CH2_PA1(centre_x);
	PWM_set_T2_CH1_PA0(centre_y);
	
}
